
package com.transaction.demo.message;

import javax.validation.Valid;

import com.transaction.demo.trade.vo.req.*;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

import com.transaction.demo.common.util.Result;
import com.transaction.demo.common.util.ResultPage;
import com.transaction.demo.trade.vo.resp.TradePaymentOrderRespVo;

/**
 * 描述：订单管理服务接口,所有与接口相关,需要做数据修改,事务管理的类,由该接口管理
 * 作者：马庆智
 * 日期：2023/4/28 14:06
 */
@FeignClient(value = "demo-trade-provider",fallback = TradePaymentManagerServiceHystrix.class, path = "/trade/tradePaymentOrder")
public interface TradePaymentManagerService {

	/**
	 * 初始化订单
	 *
	 * @param record 请求参数
	 * @return TradePaymentOrderResp
	 * @author 马庆智
	 * @date: 2023/04/27 17:22:10
	 */
	@PostMapping("/initPaymentOrder")
	Result<String> initPaymentOrder(@RequestBody @Valid InitPaymentOrderReqVo record);

	/**
	 * 完成支付
	 *
	 * @param record 请求参数
	 * @return TradePaymentOrderResp
	 * @author 马庆智
	 * @date: 2023/04/27 17:22:10
	 */
	@PostMapping("/completePay")
	Result<String> completePay(@RequestBody @Valid CompletePayReqVo record);

	/**
	 * 查询支付订单表
	 *
	 * @param record 请求参数
	 * @return TradePaymentOrderResp
	 * @author 马庆智
	 * @date: 2023/04/27 17:22:10
	 */
	@PostMapping("/queryTradePaymentOrder")
	TradePaymentOrderRespVo query(@RequestBody @Valid TradePaymentOrderReqVo record);

	/**
	 * 查询支付订单表列表
	 *
	 * @param record 请求参数
	 * @return TradePaymentOrderResp
	 * @author 马庆智
	 * @date: 2023/04/27 17:22:10
	 */
	@PostMapping("/queryTradePaymentOrderList")
	Result<ResultPage<TradePaymentOrderRespVo>> queryTradePaymentOrderList(
			@RequestBody @Valid TradePaymentOrderListReqVo record);


	/**
	 * 删除支付订单表
	 *
	 * @param ids 请求参数
	 * @return Result<Integer>
	 * @author 马庆智
	 * @date: 2023/04/27 17:22:10
	 */
	@PostMapping("/deleteTradePaymentOrder")
	Result<Integer> deleteTradePaymentOrder(String ids);

	/**
	 * 更新支付订单表
	 *
	 * @param record 请求参数
	 * @return Result<Integer>
	 * @author 马庆智
	 * @date: 2023/04/27 17:22:10
	 */
	@PostMapping("/updateTradePaymentOrder")
	Result<Integer> updateTradePaymentOrder(@RequestBody @Valid TradePaymentOrderUpdateReqVo record);
}
